//引入express
const express = require('express');
//引入连接池
const pool=require('../pool.js');
//创建路由器对象
const user=express.Router();
//添加用户路由 1注册
user.post('/reg',(req,res,next)=>{
       //1.1获取post传递的参数
       var obj=req.body
	   console.log(obj)
       //1.2验证各项是否为空
       if (!obj.uname)
       {res.send({code:401,msg:'uname不能为空'})
	   return;
       }
       if (!obj.upwd)
       {res.send({code:402,msg:'upwd不能为空'})
	   return;
      }

      if( !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(obj.email))
      {res.send({code:403,msg:'请输入正确的邮箱格式'})
	  return;
      }
      if (!/^1[3-9]\d{9}$/.test(obj.phone))
      {res.send({code:404,msg:'请输入正确的手机格式'})
	 return;
 }
      //1.3执行sql命令
pool.query('insert into  xz_user set?',[req.body],(err,result)=>{
    if(err) {
	//如果出现错误交给下一个中间件
	next(err);
	//阻止后续执行
	return;
	}
	console.log(result);
	//获取了成功的结果，再去响应
	res.send({code:200,msg:'员工添加成功'});
  });
//res.send('注册成功')
})
//查找用户接口(路由)  2查询
user.get('/:uid',(req,res,next)=>{
              pool.query('select * from xz_user where     uid=?',[req.params.uid],(err,result)=>{
              //console.log(req.params)
              if (err){next(err);
              return;
              }
              if (result.length===0)
              {res.send({code:501,msg:'该用户不存 在'})
              }else{
              res.send({code:200,msg:'查找成  功',data:result}) }
});
});
//登录接口查询  3.登录
user.post('/login',(req,res,next)=>{
	var obj =req.body
		if (obj.uname=='' || obj.upwd==''){
		res.send({code:501,msg:'请核对登录信息'})
		return;
		}
        pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
		if (err){
		next(err);
		return};
		if (result.length===0)
		{res.send({code:501,msg:'登录失败'})
		}else{
		res.send({code:200,msg:'登录成功'})
		}
});	});
//修改接口 put /   4.修改
user.put('/',(req,res,next)=>{
        var obj=req.body
	    //  console.log(obj);
        //用循环添加是否为空的条件
        var i =400;
        for (k in obj)
        {i++;
        if (!obj[k])
        {res.send({code:i,msg:k+'不能为空'})
	    return;
        }
        }
        //sql语句
        pool.query('update xz_user set? where uid=?',[obj,obj.uid],(err,result)=>{
        if (err){
        next(err)
    	return;
     }
     console.log(result)
     //result 结果是对象，里面有参数affectedRows为零则没有修改
     if (result.affectedRows==0)
    {res.send({code:501,msg:'修改失败'})
	return
   }else{
   res.send({code:200,msg:'修改成功'})
   }
});
});
//删除接口delete /编号   5.更新
user.delete('/:uid',(req,res,next)=>{
     //路由传参
     var obj =req.params;
    console.log(obj);
    //sql语句进行删除
    pool.query('delete from xz_user where uid=?',[obj.uid],(err,result)=>{
	if (err){
	next(err);
	return;
	}
	if (result.affectedRows==0)
	{res.send({code:501,msg:'删除失败'})
	}else{res.send({code:200,msg:'删除成功'})}
});
});
//5检测用户名 get /checkUser
user.get('/checkUser/:uname',(req,res,next)=>{
           var obj=req.params
	       //console.log(obj.uname,typeof obj.uname)
	       //sql查询是否在数据库中
           pool.query('select * from xz_user where uname=?',[obj.uname],(err,result)=>{
	       if (err)
	       {next (err)
		   return;
	       }
		   if(result.length===0){
		   res.send({code:200,msg:'可以使用该用户名'})
		  }else{
		res.send({code:501,msg:'用户名已存在'})
		  }
});
});
//6检测邮箱邮箱是否可用
user.get('/checkEmail/:email',(req,res,next)=>{
        var obj =req.params
		//检测邮箱格式
	 if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(obj.email))
	 {res.send({code:501,msg:'邮箱格式不正确，请重新输入'})
	 }
	console.log(obj)
    //sql语句查询邮箱是否存在
    pool.query('select * from xz_user where email=?',[obj.email],(err,result)=>{
    if (err)
    {next(err)
	return
    }if (result.length===0)
    {res.send({code:202,msg:'可以使用这个邮箱'})
    }else{
     res.send({code:501,msg:'这个邮箱已存在'})
   }
});
});
//7检测手机号get checkPhone/手机号
user.get('/checkPhone/:phone',(req,res,next)=>{
	    var obj=req.params
			//检测手机号格式
		if (!/^1[3-9]\d{9}$/.test(obj.phone))
		{res.send({code:501,msg:'手机号格式不正确，请重新输入'})
		return;
		}
    //sql语句检测是否存在
	pool.query('select * from xz_user where phone=?',[obj.phone],(err,result)=>{
	if (err)
	{next(err)
		return;
	}if (result.length===0)
	{res.send({code:202,msg:'可以使用该手机号'})
	}else{
	res.send({code:501,msg:'该手机号已存在'})
	}
	});
});
//8获取用户列表 分页查询(get /)
user.get('/',(req,res,next)=>{
var obj = req.query
//sql语句进行分页查询
pool.query(`select * from xz_user Limit ${(obj.po -1)*(obj.count)},${obj.count}`,(err,result)=>{
    if (err)
    {next(err)
	return;
}res.send({code:200,msg:'查询成功',data:result})

});
});

//暴露用户路由
module.exports=user;
